﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using RRTWSEntityDSD.Dominio;
using RRTWSEntityDSD.Dao;

namespace RRTWSDSD.ServiceEntidad
{
    /// <summary>
    /// Summary description for AsientoService
    /// </summary>
    [WebService(Namespace = "http://rtt.edu.upc.com.pe/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class AsientoService : System.Web.Services.WebService
    {
        private static AsientoDAO asientoDAO = new AsientoDAO();

        [WebMethod]
        public List<Asiento> listarAsientos()
        {
            return asientoDAO.getListarAsientos();
        }
        [WebMethod]
        public Asiento getAsiento(int id)
        {
            if (id == 0)
            {
                throw new NullReferenceException("valor vacio");
            }
            Asiento a = asientoDAO.getAsientoByID(id);
            if (a == null)
            {
                throw new NullReferenceException("No existe asiento ");
            }
            return a;
        }

        [WebMethod]
        public Asiento getAsientoDisponiblePorEvento(int id, int evento)
        {
            if ((id == 0 && evento == 0))
            {
                throw new NullReferenceException("valor vacio");
            }
            Asiento a = getAsiento(id);
            if (a == null)
            {
                throw new NullReferenceException("No existe asiento");
            }
            a = asientoDAO.getAsientoDisponiblePorEvento(id, evento);
            if (a == null)
            {
                throw new NullReferenceException("No esta disponible este asiento con numero : " + a.numero);
            }
            return a;
        }

        [WebMethod]
        public List<Asiento> getListaAsientoDisponiblePorEvento(string evento)
        {
            int _evento = int.Parse(evento);
            List<Asiento> a = asientoDAO.getListaAsientoDisponiblePorEvento(_evento);
            if (a == null)
            {
                throw new NullReferenceException("No esta disponible : " + evento);
            }
            return a;
        }

        [WebMethod]
        public List<Asiento> listarAsientosPorEstadio(int id)
        {
            if ((id == 0))
            {
                throw new NullReferenceException("valor vacio");
            }
            return asientoDAO.getListaAsientosPorEstadio(id);
        }
        [WebMethod]
        public List<Asiento> listarAsientosPorEvento(int evento)
        {
            return asientoDAO.getListarAsientosPorEvento(evento);
        }
        [WebMethod]
        public Asiento crear(string numero, int estado)
        {
            return asientoDAO.insert(numero, estado);
        }
        [WebMethod]
        public Asiento actualizar(int idasiento, string numero, int estado)
        {
            return asientoDAO.update(idasiento, numero, estado);
        }

    }
}
